# 导入数据库库
from databases import Database

# 导入 SQLAlchemy
import sqlalchemy

# 创建数据库连接
database = Database("sqlite:///example.db")
# 创建元数据对象
metadata = sqlalchemy.MetaData()


# 定义启动事件处理函数
async def startup():
    # 启动时连接数据库
    await database.connect()
    print("数据库连接成功")


# 定义关闭事件处理函数
async def shutdown():
    # 关闭时断开数据库连接
    await database.disconnect()
    print("数据库连接已断开")


# 定义主函数
def main():
    # 导入必要的模块
    from starlette.applications import Starlette
    from starlette.routing import Route
    from starlette.responses import PlainTextResponse
    import uvicorn

    # 定义简单的处理函数
    async def homepage(request):
        result = await database.fetch_one("SELECT 1 as test")
        print(f"测试查询结果: {result}")
        return PlainTextResponse("数据库集成示例")

    # 创建应用实例
    app = Starlette(
        routes=[Route("/", homepage)], on_startup=[startup], on_shutdown=[shutdown]
    )
    # 启动服务器
    uvicorn.run(app, host="127.0.0.1", port=8000)


# 脚本入口
if __name__ == "__main__":
    main()
